package a06_polymorphism.Shape;

/**
 * @Author quan
 * @Description 知识点：使用一个例子实现多态：
 * 父类是Shape类，其他的类都继承该父类，重写Shape类中的draw方法
 * @Date 2023/3/5 21:34
 */
public class TestDemo {
    public static void main(String[] args) {
        //正常的写法:我需要打印这三个类的形状，需要创建每一个类的对象并调用draw方法
        Circle circle = new Circle();
        Retangle retangle = new Retangle();
        Star star = new Star();
        //方法1
/*        circle.draw();
        retangle.draw();
        star.draw();*/

        //方法2：或者将它们存到数组中，if-else判断条件打印输出
       /* String[] arr = {"circle","retangle","star"};
        for (int i = 0; i < arr.length; i++) {
            if(arr[i].equalsIgnoreCase("circle")){
                circle.draw();
            } else if (arr[i].equalsIgnoreCase("retangle")) {
                retangle.draw();
            }else{
                star.draw();
            }
        }*/

        //但是这样存在一个很大的问题:就是如果我的形状对象特别多呢，难道要一个一个的创建对象吗？这岂不是太繁琐了
        //因此呢，就有聪明的学者创建出了多态这个东东
        //那我们就来看一下用多态的方式怎么打印吧~
        Shape[] shape = {new Circle(),new Retangle(),new Star()};
        for (Shape shape1 : shape) {
            shape1.draw();
        }
    }
}
